import request from '@/utils/request'

// 教师API前缀
const API_PREFIX = '/teacher'

// 教师相关API
export default {
  /**
   * 获取教师课程列表
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回课程列表
   */
  getCourses(params) {
    return request.get(`${API_PREFIX}/courses`, params)
  },

  /**
   * 获取课程详情
   * @param {string|number} courseId - 课程ID
   * @returns {Promise} - 返回课程详情
   */
  getCourseDetail(courseId) {
    return request.get(`${API_PREFIX}/courses/${courseId}`)
  },

  /**
   * 创建课程
   * @param {Object} data - 课程信息
   * @returns {Promise} - 返回创建结果
   */
  createCourse(data) {
    return request.post(`${API_PREFIX}/courses`, data)
  },

  /**
   * 更新课程信息
   * @param {string|number} courseId - 课程ID
   * @param {Object} data - 课程信息
   * @returns {Promise} - 返回更新结果
   */
  updateCourse(courseId, data) {
    return request.put(`${API_PREFIX}/courses/${courseId}`, data)
  },

  /**
   * 删除课程
   * @param {string|number} courseId - 课程ID
   * @returns {Promise} - 返回删除结果
   */
  deleteCourse(courseId) {
    return request.delete(`${API_PREFIX}/courses/${courseId}`)
  },

  /**
   * 获取课程学生列表
   * @param {string|number} courseId - 课程ID
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回学生列表
   */
  getCourseStudents(courseId, params) {
    return request.get(`${API_PREFIX}/courses/${courseId}/students`, params)
  },

  /**
   * 获取教师课表
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回课表数据
   */
  getSchedule(params) {
    return request.get(`${API_PREFIX}/schedule`, params)
  },

  /**
   * 获取作业列表
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回作业列表
   */
  getHomework(params) {
    return request.get(`${API_PREFIX}/homework`, params)
  },

  /**
   * 获取作业详情
   * @param {string|number} homeworkId - 作业ID
   * @returns {Promise} - 返回作业详情
   */
  getHomeworkDetail(homeworkId) {
    return request.get(`${API_PREFIX}/homework/${homeworkId}`)
  },

  /**
   * 创建作业
   * @param {Object} data - 作业信息
   * @returns {Promise} - 返回创建结果
   */
  createHomework(data) {
    return request.post(`${API_PREFIX}/homework`, data)
  },

  /**
   * 更新作业
   * @param {string|number} homeworkId - 作业ID
   * @param {Object} data - 作业信息
   * @returns {Promise} - 返回更新结果
   */
  updateHomework(homeworkId, data) {
    return request.put(`${API_PREFIX}/homework/${homeworkId}`, data)
  },

  /**
   * 删除作业
   * @param {string|number} homeworkId - 作业ID
   * @returns {Promise} - 返回删除结果
   */
  deleteHomework(homeworkId) {
    return request.delete(`${API_PREFIX}/homework/${homeworkId}`)
  },

  /**
   * 获取作业提交列表
   * @param {string|number} homeworkId - 作业ID
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回提交列表
   */
  getHomeworkSubmissions(homeworkId, params) {
    return request.get(`${API_PREFIX}/homework/${homeworkId}/submissions`, params)
  },

  /**
   * 评分作业
   * @param {string|number} submissionId - 提交ID
   * @param {Object} data - 评分信息
   * @returns {Promise} - 返回评分结果
   */
  gradeHomework(submissionId, data) {
    return request.post(`${API_PREFIX}/homework/submissions/${submissionId}/grade`, data)
  },

  /**
   * 创建考勤
   * @param {Object} data - 考勤信息
   * @returns {Promise} - 返回创建结果
   */
  createAttendance(data) {
    return request.post(`${API_PREFIX}/attendance`, data)
  },

  /**
   * 获取考勤记录
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回考勤记录
   */
  getAttendance(params) {
    return request.get(`${API_PREFIX}/attendance`, params)
  },

  /**
   * 获取考勤详情
   * @param {string|number} attendanceId - 考勤ID
   * @returns {Promise} - 返回考勤详情
   */
  getAttendanceDetail(attendanceId) {
    return request.get(`${API_PREFIX}/attendance/${attendanceId}`)
  },

  /**
   * 更新考勤状态
   * @param {string|number} attendanceId - 考勤ID
   * @param {string|number} studentId - 学生ID
   * @param {Object} data - 状态信息
   * @returns {Promise} - 返回更新结果
   */
  updateAttendanceStatus(attendanceId, studentId, data) {
    return request.put(`${API_PREFIX}/attendance/${attendanceId}/students/${studentId}`, data)
  },

  /**
   * 获取成绩管理列表
   * @param {Object} params - 查询参数
   * @returns {Promise} - 返回成绩列表
   */
  getGrades(params) {
    return request.get(`${API_PREFIX}/grades`, params)
  },

  /**
   * 录入/更新成绩
   * @param {string|number} courseId - 课程ID
   * @param {string|number} studentId - 学生ID
   * @param {Object} data - 成绩信息
   * @returns {Promise} - 返回录入结果
   */
  updateGrade(courseId, studentId, data) {
    return request.put(`${API_PREFIX}/grades/courses/${courseId}/students/${studentId}`, data)
  },

  /**
   * 批量导入成绩
   * @param {string|number} courseId - 课程ID
   * @param {File} file - 成绩文件
   * @param {Function} onProgress - 上传进度回调
   * @returns {Promise} - 返回导入结果
   */
  importGrades(courseId, file, onProgress) {
    return request.upload(`${API_PREFIX}/grades/courses/${courseId}/import`, file, onProgress)
  },

  /**
   * 导出成绩
   * @param {string|number} courseId - 课程ID
   * @returns {Promise} - 返回导出结果
   */
  exportGrades(courseId) {
    return request.download(`${API_PREFIX}/grades/courses/${courseId}/export`, {}, `成绩表-${courseId}.xlsx`)
  },

  /**
   * 上传教学资源
   * @param {string|number} courseId - 课程ID
   * @param {File} file - 资源文件
   * @param {Object} data - 资源信息
   * @param {Function} onProgress - 上传进度回调
   * @returns {Promise} - 返回上传结果
   */
  uploadResource(courseId, file, data, onProgress) {
    const formData = new FormData()
    formData.append('file', file)
    
    // 添加其他数据
    for (const key in data) {
      formData.append(key, data[key])
    }
    
    return request.post(`${API_PREFIX}/resources/courses/${courseId}`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      },
      onUploadProgress: onProgress
    })
  },

  /**
   * 获取教师仪表盘数据
   * @returns {Promise} - 返回仪表盘数据
   */
  getDashboard() {
    return request.get(`${API_PREFIX}/dashboard`)
  }
} 